{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 机器学习入门之线性回归\n",
    "你所在的公司在电视上做产品广告, 收集到了电视广告投入x(以百万为单位)与产品销售量y(以亿为单位)的数据. 你作为公司的数据科学家, 希望通过分析这些数据, 了解电视广告投入x(以百万为单位)与产品销售量y的关系. \n",
    "\n",
    "假设x与y的之间的关系是线性的, 也就是说 y = ax + b. 通过线性回归(Linear Regression), 我们就可以得知 a 和 b 的值. 于是我们在未来做规划的时候, 通过电视广告投入x, 就可以预测产品销售量y, 从而可以提前做好生产和物流, 仓储的规划. 为客户提供更好的服务."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"data/Advertising.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>230.1</td>\n",
       "      <td>22.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44.5</td>\n",
       "      <td>10.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>17.2</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>151.5</td>\n",
       "      <td>18.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180.8</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      TV  sales\n",
       "0  230.1   22.1\n",
       "1   44.5   10.4\n",
       "2   17.2    9.3\n",
       "3  151.5   18.5\n",
       "4  180.8   12.9"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['TV', 'sales'], dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过数据可视化分析数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a16c6c860>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(16, 8))\n",
    "plt.scatter(data['TV'], data['sales'], c ='black')\n",
    "plt.xlabel(\"Money spent on TV ads\")\n",
    "plt.ylabel(\"Sales\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
       "         normalize=False)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = data['TV'].values.reshape(-1,1)\n",
    "y = data['sales'].values.reshape(-1,1)\n",
    "\n",
    "reg = LinearRegression()\n",
    "reg.fit(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a = 0.047537\n",
      "b = 7.0326\n",
      "线性模型为: Y = 0.047537X + 7.0326 \n"
     ]
    }
   ],
   "source": [
    "print('a = {:.5}'.format(reg.coef_[0][0]))\n",
    "print('b = {:.5}'.format(reg.intercept_[0]))\n",
    "\n",
    "print(\"线性模型为: Y = {:.5}X + {:.5} \".format(reg.coef_[0][0], reg.intercept_[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化训练好的线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1a1695ab70>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "predictions = reg.predict(X)\n",
    "\n",
    "plt.figure(figsize=(16, 8))\n",
    "plt.scatter(data['TV'], data['sales'], c ='black')\n",
    "plt.plot(data['TV'], predictions,c ='blue', linewidth=2)\n",
    "plt.xlabel(\"Money spent on TV ads\")\n",
    "plt.ylabel(\"Sales\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 做预测\n",
    "假设公司希望在下一个季度投一亿元的电视广告, 那么预期的产品销量会是多少呢?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "投入一亿元的电视广告, 预计的销售量为11.786亿\n"
     ]
    }
   ],
   "source": [
    "predictions = reg.predict([[100])\n",
    "print('投入一亿元的电视广告, 预计的销售量为{:.5}亿'.format( predictions[0][0]) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
